#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#pyversion:python3.5
#owner:fuzj


menu_info = {
    "北京":{"朝阳":["鸟巢","水立方"],"海淀":["中关村","西三旗"],"昌平":["天通苑","沙河"]},
    "上海":{"徐家汇":["娱乐","购物"],"黄埔":["读书","学习"],"静安":["买车","买房"]},
    "河南":{"郑州":["火车","飞机"],"洛阳":["自行车","电动车"],"安阳":["特斯拉","凯悦"]}
}

#此函数用来格式化输出本级菜单，并返回用户选择的菜单项
def Menu(info):
    ext = ["back","quit"]     #将back 和quit 存到列表
    menu = {}               #定义一个空的mene字典，用来存放选项数字和选项的对应关系
    key = list(sorted(info)) + ext     #合并形成完整的菜单列表
    for k, v in enumerate(key,start=1):
        print(k, v)                    #输出菜单项
        menu[str(k)] = v                #将选项数字和选项的对应关系存字典
    for i in range(3):
        if i < 3:
            rs = str(input("Your Choose: "))    #用户输入
            if rs in menu:              # 判断用户输入的数字是否在选项中
                return menu[rs]
            else:
                print('''Input Error,Please Select Right option !!!
                You have %s chance....''' % (2-i))
                #os.system("clear")
        else:
            print("Input Too manay error,go away!!!")
            return "quit"




tag = 1                   #初始化标签
while True:
    if tag == 1:              #表示一级菜单
        menu01 = Menu(menu_info.keys())
        if menu01 == "back":   #判断返回值，一级菜单返回的话直接退出
            exit()
        elif menu01 == "quit":   #判断返回值，quit 表示退出
            exit()
        else:
            tag += 1               #若显示完一级菜单，默认进行显示二级菜单，tag+1
    if tag == 2:             #二级菜单继续
        menu02 = Menu(menu_info[menu01])
        if menu02 == "back":   #判断返回值， 若为back，则返回一级菜单，tag初始化为1
            tag = 1
            continue                    #跳过此次循环
        elif menu02 == "quit":        #判断返回值，quit 表示退出
            exit()
        else:
            tag += 1                     #若显示完二级菜单，默认进行显示三级菜单，tag+1
    if tag == 3:
        menu03 = Menu(menu_info[menu01][menu02])
        if menu03 == "back":         #判断返回值， 若为back，则返回二级菜单，tag初始化为2
            tag = 2
            continue                #跳过此次循环
        elif menu03 == "quit":     #判断返回值，quit 表示退出
            exit()

